package com.ruoyi.system.service;

import com.ruoyi.common.core.domain.entity.ProOrder;
import com.ruoyi.common.core.domain.entity.ProOrderDetail;

import java.util.List;

/**
 * 加工订单 业务层
 */
public interface ITblProOrderService {
    /**
     * 根据条件分页查询订单列表
     *
     * @param proOrder 加工订单
     * @return 加工订单集合信息
     */
    public List<ProOrder> selectProOrderList(ProOrder proOrder);

    /**
     * 根据订单编号获取该加工订单
     *
     * @param orderCode 订单编号
     * @return
     */
    public ProOrder selectProOrderByCode(String orderCode);

    /**
     * 导入订单数据
     *
     * @param proOrder           订单数据列表
     * @param proOrderDetailList 订单详情列表数据列表
     * @param operName           操作用户
     * @return 结果
     */
    public String importProOrder(ProOrder proOrder, List<ProOrderDetail> proOrderDetailList, String operName);


    /**
     * 根据条件分页查询订单详情任务列表
     *
     * @param proOrderDetail 加工订单
     * @return 加工订单集合信息
     */
    public List<ProOrderDetail> selectProOrderDetailList(ProOrderDetail proOrderDetail);


    /**
     * 批量删除加工订单
     *
     * @param orderCodes 需要删除的订单code
     * @return 结果
     */
    public int deleteOrderByCodes(String[] orderCodes);


    /**
     * 批量删除加工订单详情
     *
     * @param orderIds 需要删除的订单code
     * @return 结果
     */
    public int deleteOrderDetailByIds(String[] orderIds);

    /**
     * 新增加工订单
     *
     * @param proOrder 需要删除的订单code
     * @return 结果
     */
    public int insertProOrder(ProOrder proOrder);

    /**
     * 修改加工订单
     *
     * @param proOrder 需要删除的订单code
     * @return 结果
     */
    public int updateProOrder(ProOrder proOrder);

    /**
     * 查询所有订单编号
     *
     * @param orderCode 模糊搜索的code
     *
     * @return 结果
     */
    public List<String> selectAllOrderCode(String orderCode);


    /**
     * 新增加工订单详情任务
     *
     * @param proOrderDetail 需要新增的详情任务
     * @return 结果
     */
    public int insertProOrderDetail(ProOrderDetail proOrderDetail);

    /**
     * 修改加工订单详情任务
     *
     * @param proOrderDetail 需要修改的详情任务
     * @return 结果
     */
    public int updateProOrderDetail(ProOrderDetail proOrderDetail);

    /**
     * 删除加工订单详情
     *
     * @param orderId 需要删除的订单code
     * @return 结果
     */
    public int deleteOrderDetailById(Long orderId);

    /**
     * 拆分子任务
     *
     * @param orderId 需要删除的订单code
     * @return 结果
     */
    public int splitOrderTask(Long orderId,int num);
}
